package top.whysu.rongcloud.service;

import top.whysu.rongcloud.constant.RongCloudConstant;
import top.whysu.rongcloud.dto.http.Response;
import top.whysu.rongcloud.dto.rongcloud.FriendInfoResultEntity;
import top.whysu.rongcloud.dto.rongcloud.FriendShipResultEntity;
import top.whysu.rongcloud.dto.rongcloud.friendship.FriendShipAccountDTO;
import top.whysu.rongcloud.dto.rongcloud.friendship.DisplayNameAccountDTO;
import top.whysu.rongcloud.dto.rongcloud.friendship.FriendShipAllDTO;
import top.whysu.rongcloud.dto.rongcloud.friendship.FriendShipInviteDTO;

import java.util.List;

public interface RongCloudFriendShipService {

    /**
     * 添加好友
     *
     * @param friendShipInviteDTO 请求参数
     * @return 响应结果
     * @author @2021-03-15 18:35
     */
    Response wholeInvite(FriendShipInviteDTO friendShipInviteDTO);

    /**
     * 同意好友请求
     */
    Response wholeAgree(FriendShipAccountDTO friendShipAccountDTO);

    /**
     * 忽略好友请求
     */
    void wholeIgnore(FriendShipAccountDTO friendShipAccountDTO);

    /**
     * 逻辑删除好友（将status置为 {@link RongCloudConstant#DELETED}）
     *
     * @param friendShipAccountDTO 请求参数
     * @author @2021-03-15 20:27
     */
    void delete(FriendShipAccountDTO friendShipAccountDTO);

    /**
     * 设置备注名
     *
     * @param displayNameAccountDTO 请求参数
     * @author @2021-03-15 22:30
     */
    void wholeSetDisplayTime(DisplayNameAccountDTO displayNameAccountDTO);

    /**
     * 获取好友列表
     *
     * @param friendShipAllDTO 请求参数
     * @param isNewFriendList 是否是“新的朋友”列表。true是false否。界面类似于微信-通讯录-新的朋友
     * @return 好友列表
     * @author @2021-03-15 22:43
     */
    List<FriendShipResultEntity> getAllFriendShipList(FriendShipAllDTO friendShipAllDTO, boolean isNewFriendList);

    /**
     * 获取单个好友信息
     *
     * @param friendShipAccountDTO 请求参数
     * @return 好友信息
     * @author @2021-03-15 23:09
     */
    FriendInfoResultEntity getFriendInfo(FriendShipAccountDTO friendShipAccountDTO);

}
